package cn.pet.service.manage.controller;


import cn.pet.service.manage.common.Response;
import cn.pet.service.manage.entity.PetGoodsType;
import cn.pet.service.manage.entity.PetUser;
import cn.pet.service.manage.entity.api.Result;
import cn.pet.service.manage.entity.dto.GoodsTypeDTO;
import cn.pet.service.manage.service.PetGoodsTypeService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * <p>
 * 商品类型表 前端控制器
 * </p>
 *
 * @author 
 * @since 2023-02-11
 */
@RestController
@RequestMapping("/manage/petGoodsType")
public class PetGoodsTypeController {

    @Resource
    private PetGoodsTypeService petGoodsTypeService;

    /**
     * 商品类型列表
     * @return
     */
    @GetMapping("list")
    public Object list(GoodsTypeDTO goodsTypeDTO){
        //构造分页构造器
//        Page pageInfo = new Page(goodsTypeDTO.getPage(),goodsTypeDTO.getPageSize());
        PageHelper.startPage(goodsTypeDTO.getPageNum(),goodsTypeDTO.getPageSize());
        //构造条件构造器
        LambdaQueryWrapper<PetGoodsType> queryWrapper = new LambdaQueryWrapper();
        //添加过滤条件
        queryWrapper.like(StringUtils.isNotEmpty(goodsTypeDTO.getTypeName()),PetGoodsType::getTypeName,goodsTypeDTO.getTypeName());
        //添加排序条件
        queryWrapper.orderByDesc(PetGoodsType::getCreateTime);
        //执行查询
//        petGoodsTypeService.page(pageInfo, queryWrapper);
        return Result.ok("success",new PageInfo<>(petGoodsTypeService.list(queryWrapper)));
    }

    /**
     * 添加商品类型
     * @param petGoodsType
     * @return
     */
    @PostMapping("add")
    public Object add(@RequestBody PetGoodsType petGoodsType){
        if (!petGoodsTypeService.save(petGoodsType)){
            return Result.error("添加失败");
        }
        return Result.ok("添加成功");
    }

    /**
     * 编辑商品类型
     * @param petGoodsType
     * @return
     */
    @PutMapping("edit")
    public Object edit(@RequestBody PetGoodsType petGoodsType){
        if (!petGoodsTypeService.updateById(petGoodsType)){
            return Result.error("编辑失败");
        }
        return Result.ok("编辑成功");
    }

    /**
     * 查看商品类型信息
     * @param id
     * @return
     */
    @GetMapping("detail/{id}")
    public Object detail(@PathVariable("id") Integer id){
        return Result.ok("success",petGoodsTypeService.getById(id));
    }

    /**
     * 删除商品类型
     * @param id
     * @return
     */
    public Object delete(@PathVariable("id") Integer id){
        if (!petGoodsTypeService.removeById(id)){
            return Result.error("删除失败");
        }
        return Result.ok("删除成功");
    }

}
